# 类属性：就是类对象所拥有的属性，它被所有类对象的实例对象所共有，类对象和实例对象可以访问
# 实例属性：实例对象所拥有的属性，只能通过实例对象访问
class Person:
    country="中国"    #类属性
    def __init__(self,name):
        self.name=name   #实例属性
        pass
    pass
xiaoming=Person("小明")
print(xiaoming.country)
print(Person.country)
print(xiaoming.name)
# print(Person.name)   #类对象不能访问实例属性，改代码会报错

# 类属性的修改
# 如果需要在类外修改类属性，必须通过类对象去引用然后进行修改。
# 如果通过实例对象去引用，会产生一个同名的实例属性，这种方式修改的是实例属性，不会影响到类属性，
# 并且之后如果通过实例对象去引用该名称的属性，实例属性会强制屏蔽掉类属性，即引用的是实例属性，
# 除非删除了该实例属性
xiaoming.country="Japan"   #此处会生出一个和类属性同名的实例属性，本质上修改属性的值，是在修改时实例属性
print(xiaoming.country)
print(Person.country)

# 若需要修改类属性，需要使用类对象进行修改
Person.country="China"
print(Person.country)
print(xiaoming.country)
